#pragma once

class MainWindow;
class Renderer;

class UIObject
{
public:
	virtual void __stdcall AddRef() = 0;
	virtual void __stdcall Release() = 0;

	virtual void OnGUI() = 0;
};

class UIParent
{
public:
	virtual void __stdcall AddRef() = 0;
	virtual void __stdcall Release() = 0;

	virtual bool __stdcall Init(MainWindow* lpMainWindow, Renderer* lpRenderer) = 0;
	virtual bool __stdcall Load(const wchar_t* szPath) = 0;
	virtual void __stdcall OnGUI() = 0;

	virtual bool __stdcall WndProc(const MSG& _Msg, LRESULT& ret) = 0;
};

extern "C" UIParent* __stdcall CreateUIParent();
